package com.jl.mapper;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jl.model.DeviceComponent;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 设备中的配件表(绑定具体设备) Mapper 接口
 * </p>
 *
 * @author JiangJian
 * @since 2019-04-24
 */
public interface DeviceComponentMapper extends BaseMapper<DeviceComponent> {


    /**
     * 查询设备配件的信息
     * @param page 分页参数
     * @param qw 查询条件
     * @return
     */
    List<Map<String,Object>> selectDataGrid(Page<Map<String,Object>> page, @Param("ew") QueryWrapper<DeviceComponent> qw);

    /**
     * 查找DeviceComponent列表
     * @param deviceId 设备id
     * @param partId 部位id
     * @param componentIds 配件列表
     * @return
     */
//    List<DeviceComponent> selectDeviceComponentByComponentId(@Param("deviceId")Long deviceId,@Param("partId")Long partId,
//                                                             @Param("componentIds")List<Long> componentIds);
    /**
     * 查找DeviceComponent列表 用于新增故障时获取的更换设备的数据
     * @param deviceId 设备id
     * @param componentIds 配件列表
     * @return
     */
    List<DeviceComponent> selectChangeDeviceComponent(@Param("deviceId")Long deviceId, @Param("componentIds")List<Long> componentIds);


    /**
     * 删除某台设备中的所有配件信息
     * @param deviceId 设备id
     * @return
     */
    Integer deleteDeviceComponentWithDeviceId(@Param("deviceId") Long deviceId);

    /**
     * 批量删除属于某类型的设备的deviceComponent中的某些配件数据
     * @param modelId 部位id
     * @param componentIds 配件id列表
     * @return
     */
    Integer deleteDeviceComponentListWithModelIdByComponentIds(@Param("modelId") Long modelId,@Param("componentIds") List<Long> componentIds);

    /**
     * 批量插入deviceComponent的数据
     * @param deviceComponents deviceComponent列表
     * @return
     */
    Integer insertBatch(@Param("deviceComponents") List<DeviceComponent> deviceComponents);

    /**
     * 查找快过到预计寿命的（一周）的所有零件
     * @param page 分页参数
     * @param days 天数
     * @return
     */
    List<Map<String,Object>> selectDeadLineComponent(Page<Map<String,Object>> page,@Param("days") Integer days);
}
